package br.com.fgv.tcc.fgv.imovel.service;

import br.com.fgv.tcc.fgv.imovel.dao.Dao;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;

/**
 *
 * @author diego
 */
/**
 * Esta classe é responsável por conter as operações genéricas para realização
 * dos pricipais servicos do siste.
 * 
* @author Adão
 */
public abstract class ServiceGeneric implements Service {

    private Class classePersistida;

    protected abstract Dao getDaoManager();
    
    protected   Criteria criteriosBusca;

    public ServiceGeneric(Class classePersistida) {
        this.classePersistida = classePersistida;
    }

    @Override
    public Object recuperar(Serializable id)  {
        try {
            return getDaoManager().recuperar(id);
        } catch (HibernateException e) {
            throw e;
        }
    }

    @Override
    public List buscar() {
        try {
            return getDaoManager().buscar(criteriosBusca);

        } catch (HibernateException e) {
            throw e;
        }
    }

    @Override
    public List listarTodos() {
        try {
            return getDaoManager().listarTodos();

        } catch (HibernateException e) {
            throw e;
        }
    }

    @Override
    public void salvar(Object t) {
        try {
            getDaoManager().salvar(t);

        } catch (HibernateException e) {
            throw e;
        }
    }

    @Override
    public void atualizar(Object t) {
        try {
            getDaoManager().atualizar(t);
        } catch (HibernateException e) {
            throw e;
        }
    }

    @Override
    public void salvarAtualizar(Object t) {
        try {
            getDaoManager().salvarAtualizar(t);

        } catch (HibernateException e) {
            throw e;
        }
    }

    @Override
    public void remover(Object t)  {
        try {
            getDaoManager().remover(t);

        } catch (HibernateException e) {
            throw e;
        }
    }

}
